In a typical computer architecture, the initialization and configuration of the computer system by the Basic Input/Output System (BIOS) is commonly referred to as the pre-boot phase. The pre-boot phase is generally defined as the firmware that runs between the processor reset and the first instruction of the Operating System (OS) loader. At the start of a pre-boot, it is up to the code in the firmware to initialize the system to the point that an operating system loaded off of media, such as a hard disk, can take over. The start of the OS load begins the period commonly referred to as OS runtime. During OS runtime, the firmware acts as an interface between software and hardware components of a computer system.
When a computer system starts up, system software is loaded into memory. Usually, system software is loaded once when the computer is booted and is not removed from memory until the system is shut down. System software generally cannot be moved to a different memory location without resetting the entire computer system. System software thus generally does not have the ability to self-relocate without restarting the computer system. The system software may be able to mark a region of memory as “bad” and keep the information in persistent storage so that the next time the system starts, these faulty memory areas will be avoided when loading the system software. However, for systems that rarely reboot, such as a server, errors may grow within a region of memory until finally a complete failure occurs.